Législatives 2024
Etude : Prévisions des intentions de votes
Second Tour
Auteur: Stéphane Srsa
In [2]:
# Librairies et fonctions
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.pyplot as plt
import folium
from folium.features import GeoJson, GeoJsonTooltip
import geopandas as gpd
from branca.element import Element
import warnings
warnings.filterwarnings("ignore")
from Legis_Fonctions import *
In [4]:
# Fichier Résultats Législatives 2024-1er Tour par circonscription :
Result1erTour = pd.read_excel('Result_1erTour_Legis2024.xlsx')
In [5]:
# affichage de toutes les colonnes
Result1erTour.info(1)
<class 'pandas.core.frame.DataFrame'> RangeIndex: 577 entries, 0 to 576 Data columns (total 209 columns): # Column Dtype --- ------ ----- 0 Departement object 1 CodCirElec object 2 LibCirElec object 3 NbSap int64 4 NbSiePourvus int64 5 Inscrits int64 6 Abstentions int64 7 Votants int64 8 Blancs int64 9 Nuls int64 10 Exprimes int64 11 Abstentions_RapportInscrits float64 12 Votants_RapportInscrits float64 13 Blancs_RapportInscrits float64 14 Blancs_RapportVotants float64 15 Nuls_RapportInscrits float64 16 Nuls_RapportVotants float64 17 Exprimes_RapportInscrits float64 18 Exprimes_RapportVotants float64 19 Candidat_1_NumPanneauCand int64 20 Candidat_1_NomPsn object 21 Candidat_1_PrenomPsn object 22 Candidat_1_CivilitePsn object 23 Candidat_1_CodNuaCand object 24 Candidat_1_LibNuaCand object 25 Candidat_1_NbVoix int64 26 Candidat_1_RapportExprimes float64 27 Candidat_1_RapportInscrits float64 28 Candidat_1_Elu object 29 Candidat_2_NumPanneauCand int64 30 Candidat_2_NomPsn object 31 Candidat_2_PrenomPsn object 32 Candidat_2_CivilitePsn object 33 Candidat_2_CodNuaCand object 34 Candidat_2_LibNuaCand object 35 Candidat_2_NbVoix int64 36 Candidat_2_RapportExprimes float64 37 Candidat_2_RapportInscrits float64 38 Candidat_2_Elu object 39 Candidat_3_NumPanneauCand int64 40 Candidat_3_NomPsn object 41 Candidat_3_PrenomPsn object 42 Candidat_3_CivilitePsn object 43 Candidat_3_CodNuaCand object 44 Candidat_3_LibNuaCand object 45 Candidat_3_NbVoix int64 46 Candidat_3_RapportExprimes float64 47 Candidat_3_RapportInscrits float64 48 Candidat_3_Elu object 49 Candidat_4_NumPanneauCand int64 50 Candidat_4_NomPsn object 51 Candidat_4_PrenomPsn object 52 Candidat_4_CivilitePsn object 53 Candidat_4_CodNuaCand object 54 Candidat_4_LibNuaCand object 55 Candidat_4_NbVoix int64 56 Candidat_4_RapportExprimes float64 57 Candidat_4_RapportInscrits float64 58 Candidat_4_Elu object 59 Candidat_5_NumPanneauCand int64 60 Candidat_5_NomPsn object 61 Candidat_5_PrenomPsn object 62 Candidat_5_CivilitePsn object 63 Candidat_5_CodNuaCand object 64 Candidat_5_LibNuaCand object 65 Candidat_5_NbVoix int64 66 Candidat_5_RapportExprimes float64 67 Candidat_5_RapportInscrits float64 68 Candidat_5_Elu object 69 Candidat_6_NumPanneauCand int64 70 Candidat_6_NomPsn object 71 Candidat_6_PrenomPsn object 72 Candidat_6_CivilitePsn object 73 Candidat_6_CodNuaCand object 74 Candidat_6_LibNuaCand object 75 Candidat_6_NbVoix int64 76 Candidat_6_RapportExprimes float64 77 Candidat_6_RapportInscrits float64 78 Candidat_6_Elu object 79 Candidat_7_NumPanneauCand int64 80 Candidat_7_NomPsn object 81 Candidat_7_PrenomPsn object 82 Candidat_7_CivilitePsn object 83 Candidat_7_CodNuaCand object 84 Candidat_7_LibNuaCand object 85 Candidat_7_NbVoix int64 86 Candidat_7_RapportExprimes float64 87 Candidat_7_RapportInscrits float64 88 Candidat_7_Elu object 89 Candidat_8_NumPanneauCand int64 90 Candidat_8_NomPsn object 91 Candidat_8_PrenomPsn object 92 Candidat_8_CivilitePsn object 93 Candidat_8_CodNuaCand object 94 Candidat_8_LibNuaCand object 95 Candidat_8_NbVoix int64 96 Candidat_8_RapportExprimes float64 97 Candidat_8_RapportInscrits float64 98 Candidat_8_Elu object 99 Candidat_9_NumPanneauCand int64 100 Candidat_9_NomPsn object 101 Candidat_9_PrenomPsn object 102 Candidat_9_CivilitePsn object 103 Candidat_9_CodNuaCand object 104 Candidat_9_LibNuaCand object 105 Candidat_9_NbVoix int64 106 Candidat_9_RapportExprimes float64 107 Candidat_9_RapportInscrits float64 108 Candidat_9_Elu object 109 Candidat_10_NumPanneauCand int64 110 Candidat_10_NomPsn object 111 Candidat_10_PrenomPsn object 112 Candidat_10_CivilitePsn object 113 Candidat_10_CodNuaCand object 114 Candidat_10_LibNuaCand object 115 Candidat_10_NbVoix int64 116 Candidat_10_RapportExprimes float64 117 Candidat_10_RapportInscrits float64 118 Candidat_10_Elu object 119 Candidat_11_NumPanneauCand int64 120 Candidat_11_NomPsn object 121 Candidat_11_PrenomPsn object 122 Candidat_11_CivilitePsn object 123 Candidat_11_CodNuaCand object 124 Candidat_11_LibNuaCand object 125 Candidat_11_NbVoix int64 126 Candidat_11_RapportExprimes float64 127 Candidat_11_RapportInscrits float64 128 Candidat_11_Elu object 129 Candidat_12_NumPanneauCand int64 130 Candidat_12_NomPsn object 131 Candidat_12_PrenomPsn object 132 Candidat_12_CivilitePsn object 133 Candidat_12_CodNuaCand object 134 Candidat_12_LibNuaCand object 135 Candidat_12_NbVoix int64 136 Candidat_12_RapportExprimes float64 137 Candidat_12_RapportInscrits float64 138 Candidat_12_Elu object 139 Candidat_13_NumPanneauCand int64 140 Candidat_13_NomPsn object 141 Candidat_13_PrenomPsn object 142 Candidat_13_CivilitePsn object 143 Candidat_13_CodNuaCand object 144 Candidat_13_LibNuaCand object 145 Candidat_13_NbVoix int64 146 Candidat_13_RapportExprimes float64 147 Candidat_13_RapportInscrits float64 148 Candidat_13_Elu object 149 Candidat_14_NumPanneauCand int64 150 Candidat_14_NomPsn object 151 Candidat_14_PrenomPsn object 152 Candidat_14_CivilitePsn object 153 Candidat_14_CodNuaCand object 154 Candidat_14_LibNuaCand object 155 Candidat_14_NbVoix int64 156 Candidat_14_RapportExprimes float64 157 Candidat_14_RapportInscrits float64 158 Candidat_14_Elu object 159 Candidat_15_NumPanneauCand int64 160 Candidat_15_NomPsn object 161 Candidat_15_PrenomPsn object 162 Candidat_15_CivilitePsn object 163 Candidat_15_CodNuaCand object 164 Candidat_15_LibNuaCand object 165 Candidat_15_NbVoix int64 166 Candidat_15_RapportExprimes float64 167 Candidat_15_RapportInscrits float64 168 Candidat_15_Elu object 169 Candidat_16_NumPanneauCand int64 170 Candidat_16_NomPsn object 171 Candidat_16_PrenomPsn object 172 Candidat_16_CivilitePsn object 173 Candidat_16_CodNuaCand object 174 Candidat_16_LibNuaCand object 175 Candidat_16_NbVoix int64 176 Candidat_16_RapportExprimes float64 177 Candidat_16_RapportInscrits float64 178 Candidat_16_Elu object 179 Candidat_17_NumPanneauCand int64 180 Candidat_17_NomPsn object 181 Candidat_17_PrenomPsn object 182 Candidat_17_CivilitePsn object 183 Candidat_17_CodNuaCand object 184 Candidat_17_LibNuaCand object 185 Candidat_17_NbVoix int64 186 Candidat_17_RapportExprimes float64 187 Candidat_17_RapportInscrits float64 188 Candidat_17_Elu object 189 Candidat_18_NumPanneauCand int64 190 Candidat_18_NomPsn object 191 Candidat_18_PrenomPsn object 192 Candidat_18_CivilitePsn object 193 Candidat_18_CodNuaCand object 194 Candidat_18_LibNuaCand object 195 Candidat_18_NbVoix int64 196 Candidat_18_RapportExprimes float64 197 Candidat_18_RapportInscrits float64 198 Candidat_18_Elu object 199 Candidat_19_NumPanneauCand int64 200 Candidat_19_NomPsn object 201 Candidat_19_PrenomPsn object 202 Candidat_19_CivilitePsn object 203 Candidat_19_CodNuaCand object 204 Candidat_19_LibNuaCand object 205 Candidat_19_NbVoix int64 206 Candidat_19_RapportExprimes float64 207 Candidat_19_RapportInscrits float64 208 Candidat_19_Elu object dtypes: float64(46), int64(46), object(117) memory usage: 942.3+ KB
In [6]:
#
# Result1erTour=Result1erTour.rename(columns={"Votants_RapportInscrits":"Votants_Rapport/Inscrits"})
Result1erTour.describe()
Out[6]:
| NbSap | NbSiePourvus | Inscrits | Abstentions | Votants | Blancs | Nuls | Exprimes | Abstentions_RapportInscrits | Votants_RapportInscrits | ... | Candidat_17_RapportExprimes | Candidat_17_RapportInscrits | Candidat_18_NumPanneauCand | Candidat_18_NbVoix | Candidat_18_RapportExprimes | Candidat_18_RapportInscrits | Candidat_19_NumPanneauCand | Candidat_19_NbVoix | Candidat_19_RapportExprimes | Candidat_19_RapportInscrits | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 577.0 | 577.000000 | 577.000000 | 577.000000 | 577.000000 | 577.000000 | 577.000000 | 577.000000 | 577.000000 | 577.000000 | ... | 577.00000 | 577.000000 | 577.000000 | 577.000000 | 577.000000 | 577.000000 | 577.000000 | 577.000000 | 577.000000 | 577.000000 |
| mean | 1.0 | 0.131716 | 85498.719237 | 28460.785095 | 57037.934142 | 1009.481802 | 464.714038 | 55563.738302 | 33.242842 | 66.757158 | ... | 0.00591 | 0.001629 | 0.031196 | 6.615251 | 0.018440 | 0.005078 | 0.032929 | 0.105719 | 0.000295 | 0.000087 |
| std | 0.0 | 0.338475 | 18751.401844 | 11719.370642 | 13501.102072 | 371.943105 | 240.889252 | 13186.128878 | 8.557546 | 8.557546 | ... | 0.14196 | 0.039133 | 0.749350 | 158.903789 | 0.442949 | 0.121977 | 0.790980 | 2.539463 | 0.007077 | 0.002082 |
| min | 1.0 | 0.000000 | 5069.000000 | 2067.000000 | 2807.000000 | 37.000000 | 0.000000 | 2748.000000 | 22.060000 | 22.200000 | ... | 0.00000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| 25% | 1.0 | 0.000000 | 74146.000000 | 23384.000000 | 49335.000000 | 757.000000 | 308.000000 | 47986.000000 | 28.670000 | 65.410000 | ... | 0.00000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| 50% | 1.0 | 0.000000 | 83929.000000 | 26714.000000 | 56976.000000 | 992.000000 | 409.000000 | 55694.000000 | 31.360000 | 68.640000 | ... | 0.00000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| 75% | 1.0 | 0.000000 | 94544.000000 | 30142.000000 | 65770.000000 | 1231.000000 | 577.000000 | 64006.000000 | 34.590000 | 71.330000 | ... | 0.00000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| max | 1.0 | 1.000000 | 265932.000000 | 171173.000000 | 97098.000000 | 2478.000000 | 1792.000000 | 94261.000000 | 77.800000 | 77.940000 | ... | 3.41000 | 0.940000 | 18.000000 | 3817.000000 | 10.640000 | 2.930000 | 19.000000 | 61.000000 | 0.170000 | 0.050000 |
8 rows × 92 columns
In [7]:
# Voix
# Rappel fonction: Tmess(message, Color='firebrick', Align='center', Style='italic', Size='14', Police='arial')
Tmess("Nombre de votants exprimés: {}".format(Result1erTour["Exprimes"].sum()),'Blue','left')
Nombre de votants exprimés: 32060277
In [9]:
# Création d'une liste pour stocker les DataFrames de chaque liste
Lists = []
# Prise en compte de chaque Liste
for i in range(1, 19): # Pour 19 candidats
list_cols = {
f'Candidat_{i}_LibNuaCand': 'LibNuaCand',
f'Candidat_{i}_NbVoix': 'NbVoix'
}
List_df = Result1erTour[list(list_cols.keys())].rename(columns=list_cols)
Lists.append(List_df)
# Concaténer tous les DataFrames de listes
Lists = pd.concat(Lists)
# Supprimer les lignes avec des valeurs nulles (cas où il n'y a pas de liste)
Lists = Lists.dropna(subset=['LibNuaCand'])
# Grouper par 'LibNuaCand' et aggréger les voix
Lists = Lists.groupby('LibNuaCand').agg({'NbVoix': 'sum'})
# Filtrer les lignes où NbVoix est supérieur à 0
Lists = Lists[Lists['NbVoix'] > 0]
# Trier par le Nb de voix
Lists = Lists.sort_values(by="NbVoix", ascending=False).reset_index()
# Calcul du % par rapport aux nombre de voix totales exprimées
Lists["% Obtenu"] = (Lists["NbVoix"] *100) / Result1erTour["Exprimes"].sum()
# Renommer LibNuaCand:
Lists = Lists.rename(columns={'LibNuaCand': 'Nom de la liste'})
# Affichage
Tmess("Classement des listes par le nombre de voix obtenu",'firebrick','center',Style='normal',Size='20')
Lists
Classement des listes par le nombre de voix obtenu
Out[9]:
| Nom de la liste | NbVoix | % Obtenu | |
|---|---|---|---|
| 0 | Rassemblement National | 9377297 | 29.248958 |
| 1 | Union de la gauche | 8974566 | 27.992790 |
| 2 | Ensemble ! (Majorité présidentielle) | 6425217 | 20.041053 |
| 3 | Les Républicains | 2104918 | 6.565502 |
| 4 | Union de l'extrême droite | 1251210 | 3.902680 |
| 5 | Divers droite | 1172548 | 3.657323 |
| 6 | Divers gauche | 491069 | 1.531705 |
| 7 | Divers centre | 391408 | 1.220850 |
| 8 | Extrême gauche | 367158 | 1.145212 |
| 9 | Régionaliste | 335823 | 1.047474 |
| 10 | Reconquête ! | 240006 | 0.748609 |
| 11 | Horizons | 231667 | 0.722598 |
| 12 | Ecologistes | 181989 | 0.567646 |
| 13 | Union des Démocrates et Indépendants | 163072 | 0.508642 |
| 14 | Divers | 142805 | 0.445427 |
| 15 | Droite souverainiste | 90090 | 0.281002 |
| 16 | Extrême droite | 59679 | 0.186146 |
| 17 | Parti socialiste | 29242 | 0.091209 |
| 18 | Parti radical de gauche | 12434 | 0.038783 |
| 19 | La France insoumise | 12223 | 0.038125 |
| 20 | Parti communiste français | 3125 | 0.009747 |
| 21 | Les Ecologistes | 2668 | 0.008322 |
In [12]:
# on conserve les 19 listes pour créer le fichier excel de 'travail'
Resultat_Circon = top_Nb_listes(Result1erTour)
# Sélection des colonnes numériques utilisant une expression régulière
colonnes_numeriques = [col for col in Resultat_Circon.columns if col.startswith("% Voix Exp") or col.startswith("% Voix Ins")]
# Création de la colonne 'somme' en additionnant les valeurs des colonnes numériques
Resultat_Circon['somme'] = Resultat_Circon[colonnes_numeriques].sum(axis=1)
# Enregistrement du fichier:
#Resultat_Circon.to_excel("Legis_2024_2emeTour.xlsx", index=True)
# Afficher les premières lignes des résultats
Resultat_Circon.iloc[:, 17:30].head(3)
Out[12]:
| Exprimes_RapportInscrits | Liste1 | Parti1 | Civilité1 | Nom1 | Prénom1 | Voix Exp 1 | % Voix Exp 1 | % Voix Ins 1 | Liste2 | Parti2 | Civilité2 | Nom2 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 69.66 | RN | Rassemblement National | M. | MAÎTRE | Christophe | 23819 | 39.37 | 27.43 | LR | Les Républicains | M. | BRETON |
| 1 | 70.60 | RN | Rassemblement National | M. | KOTARAC | Andréa | 28189 | 39.20 | 27.67 | ENS | Ensemble ! (Majorité présidentielle) | M. | DAUBIÉ |
| 2 | 63.85 | ENS | Ensemble ! (Majorité présidentielle) | Mme | GIVERNET | Olga | 17420 | 32.43 | 20.71 | RN | Rassemblement National | Mme | DUBARRY |
In [15]:
Data_result=pd.read_excel("Legis_2024_Résultat2ndTour-Previsions.xlsx")
Data_result.iloc[:,18:25].head(3)
Out[15]:
| %Vote Second | ELU | %Vote ELU | Civ | Nom | Prenom | Elu / Duels | |
|---|---|---|---|---|---|---|---|
| 0 | 39.3700 | LR | 52.055 | M. | BRETON | Xavier | LR |
| 1 | 44.1325 | ENS | 48.945 | M. | DAUBIÉ | Romain | ENS |
| 2 | 33.8150 | ENS | 57.555 | Mme | GIVERNET | Olga | ENS |
In [16]:
# -------------------------------------------- Prévions du nombre de sièges par liste ------------------------------
# Liste des partis et dico de stockage (compteurs)
Partis = ['RN', 'UXD', 'EXD', 'LR', 'DVD', 'ENS', 'HOR', 'UDI', 'DVC', 'DIV', 'UG', 'DVG', 'SOC', 'ECO', 'REG']
Count_Siege = {}
Tmess("Prévisions du nombre de sièges par liste", "Blue","center",Size='20')
# Calculer les sièges pour chaque parti
for parti in Partis:
Count_Siege[parti] = (Data_result["ELU"] == parti).sum()
Tmess(f"Sièges {parti} : {Count_Siege[parti]}",'Firebrick',Align='left',Size='12')
Prévisions du nombre de sièges par liste
Sièges RN : 93
Sièges UXD : 5
Sièges EXD : 1
Sièges LR : 35
Sièges DVD : 23
Sièges ENS : 160
Sièges HOR : 7
Sièges UDI : 2
Sièges DVC : 7
Sièges DIV : 1
Sièges UG : 219
Sièges DVG : 12
Sièges SOC : 2
Sièges ECO : 1
Sièges REG : 9
In [18]:
# Création et prépartion d'un DF en vue de la Visualisation:
Resultats_Visuel = Data_result.iloc[:,:3]
Resultats_Visuel["Elu"] = Data_result["ELU"]
Resultats_Visuel["% Votes"] = Data_result["%Vote ELU"]
Resultats_Visuel["Civ"] = Data_result["Civ"]
Resultats_Visuel["Nom"] = Data_result["Nom"]
Resultats_Visuel["Prenom"] = Data_result["Prenom"]
Resultats_Visuel["Second"] = Data_result["%Vote Second"]
Resultats_Visuel = Resultats_Visuel.rename(columns={"CodCirElec":"codeCirconscription"})
Resultats_Visuel.head(3)
Out[18]:
| Departement | codeCirconscription | LibCirElec | Elu | % Votes | Civ | Nom | Prenom | Second | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 01 | 0101 | 1ère circonscription | LR | 52.055 | M. | BRETON | Xavier | 39.3700 |
| 1 | 01 | 0102 | 2ème circonscription | ENS | 48.945 | M. | DAUBIÉ | Romain | 44.1325 |
| 2 | 01 | 0103 | 3ème circonscription | ENS | 57.555 | Mme | GIVERNET | Olga | 33.8150 |
In [19]:
# ------------------------------------------------------- Chargement des données géographiques --------------------------------
# Charger les données géographiques des circonscriptions législatives françaises
geojson_url = 'circonscriptions-legislatives-p20.geojson'
gdf = gpd.read_file(geojson_url)
# Décooupage géographique
Circo_France = gdf.iloc[:539]
Circo_Guadeloupe = gdf.iloc[539:543]
Circo_Martinique = gdf.iloc[543:547]
Circo_Guyane = gdf.iloc[547:549]
Circo_LaReunion = gdf.iloc[549:556]
Circo_SPetMiq = gdf.iloc[556:557]
Circo_Mayotte = gdf.iloc[557:]
# Découpage correspondant du Df Résultats par Territoire français:
Result_2T_France = Resultats_Visuel.iloc[:539]
Result_2T_Guadeloupe = Resultats_Visuel.iloc[539:543]
Result_2T_Martinique = Resultats_Visuel.iloc[543:547]
Result_2T_Guyane = Resultats_Visuel.iloc[547:549]
Result_2T_LaReunion = Resultats_Visuel.iloc[549:556]
Result_2T_SPetMiq = Resultats_Visuel.iloc[556:557]
Result_2T_Mayotte = Resultats_Visuel.iloc[557:559]
# Harmonisation des codes Circonscription pour les DOM:
Circo_Guadeloupe['codeCirconscription'] = Circo_Guadeloupe['codeCirconscription'].str.replace('ZA', '971')
Circo_Martinique['codeCirconscription'] = Circo_Martinique['codeCirconscription'].str.replace('ZB', '972')
Circo_Guyane['codeCirconscription'] = Circo_Guyane['codeCirconscription'].str.replace('ZC', '973')
Circo_LaReunion['codeCirconscription'] = Circo_LaReunion['codeCirconscription'].str.replace('ZD', '974')
Circo_SPetMiq['codeCirconscription'] = Circo_SPetMiq['codeCirconscription'].str.replace('ZS', '975')
Circo_Mayotte['codeCirconscription'] = Circo_Mayotte['codeCirconscription'].str.replace('ZM', '976')
# Jointures des DF -2nd Tour :
Visuel_2T_France = Circo_France.merge(Result_2T_France, left_on='codeCirconscription', right_on='codeCirconscription')
Visuel_2T_Guadeloupe = Circo_Guadeloupe.merge(Result_2T_Guadeloupe, left_on='codeCirconscription', right_on='codeCirconscription')
Visuel_2T_Martinique = Circo_Martinique.merge(Result_2T_Martinique, left_on='codeCirconscription', right_on='codeCirconscription')
Visuel_2T_Guyane = Circo_Guyane.merge(Result_2T_Guyane, left_on='codeCirconscription', right_on='codeCirconscription')
Visuel_2T_LaReunion = Circo_LaReunion.merge(Result_2T_LaReunion, left_on='codeCirconscription', right_on='codeCirconscription')
Visuel_2T_SPetMiq = Circo_SPetMiq.merge(Result_2T_SPetMiq, left_on='codeCirconscription', right_on='codeCirconscription')
Visuel_2T_Mayotte = Circo_Mayotte.merge(Result_2T_Mayotte, left_on='codeCirconscription', right_on='codeCirconscription')
In [21]:
Carte_Resultats(Visuel_2T_France, Resultats_Visuel, sauv='on')
Out[21]:
Make this Notebook Trusted to load map: File -> Trust Notebook